package info.mineshafter.crypto;
import info.mineshafter.util.Resources;
import java.security.InvalidKeyException;
import java.security.KeyFactory;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.Signature;
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;
import java.security.spec.PKCS8EncodedKeySpec;
public class Signer {
static private Signer instance;
private PrivateKey key;
private Signer() {
byte[] keydata = Resources.loadByteArray("resources/ms_privkey.der");
try {
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
key = keyFactory.generatePrivate(new PKCS8EncodedKeySpec(keydata));
} catch (InvalidKeySpecException e) {
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
public static synchronized Signer getInstance() {
if(instance == null) {
instance = new Signer();
}
return instance;
}
public byte[] sign(byte[] data) {
Signature signature;
try {
signature = Signature.getInstance("SHA1withRSA");
signature.initSign(key);
signature.update(data);
return signature.sign();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (InvalidKeyException e) {
e.printStackTrace();
} catch (SignatureException e) {
e.printStackTrace();
}
return null;
}
}